﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace OrderManager
{
    public partial class DeleteOrder : Form
    {
        private List<string> Orders;

        public DeleteOrder()
        {
            InitializeComponent();

            Orders = new List<string>();

            try
            {
                StreamReader input = File.OpenText("Orders.txt");
                while (!input.EndOfStream)
                {
                    string tmp = input.ReadLine();

                    this.orderList.Items.Add(tmp);
                    this.Orders.Add(tmp);
                }
                input.Close();
            }
            catch (Exception exc)
            {
                MessageBox.Show("Hiba történt.\nA hiba leírása:\n" + exc.Message);
                this.Close();
                return;
            }
        }

        private void ShowOrderDetails(object sender, EventArgs e)
        {
            string fName = orderList.SelectedItem.ToString();

            try
            {
                StreamReader input = File.OpenText(@"orders\" + fName + ".txt");

                this.orderDetails.Text = input.ReadToEnd();

                input.Close();
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
                return;
            }
        }

        private void DeleteSelectedOrder(object sender, EventArgs e)
        {
            if (this.orderList.SelectedItem == null)
            {
                MessageBox.Show("Előbb ki kell választani a törlendő megrendelést.");
                return;
            }


            DialogResult dr = new System.Windows.Forms.DialogResult();
            ConfirmationWindow cw = new ConfirmationWindow("Biztosan törlöd a '" + this.orderList.SelectedItem.ToString() + "' azonosítójú rendelést?");
            dr = cw.ShowDialog();


            if (dr != DialogResult.OK && dr != DialogResult.Yes) { return; }

            
            try
            {
                File.Copy("Orders.txt", "Orders backup.txt");
            }
            catch (Exception exc)
            {
                MessageBox.Show("Nem sikerült biztonsági másolatot létrehozni a rendeléseket tartalmazó fájlról.\nA törlési művelet nem folytatódik tovább.\nAz adatok érintetlenek maradtak.\nA hiba részletes leírása:\n" + exc.Message);
                this.Close();
                
                return;
            }

            try{
                StreamWriter output = File.CreateText("Orders.txt");

                while (Orders.Count != 0)
                {
                    if (Orders[0] != this.orderList.SelectedItem.ToString())
                    {
                        output.WriteLine(this.Orders[0].ToString());
                    }
                    Orders.RemoveAt(0);
                }
                output.Flush();
                output.Close();
            }
            catch (Exception exc)
            {
                MessageBox.Show(@"Hiba történt a megrendelések frissítésekor." +
                    "A megrendelést tartalmazó fájl megmaradt, de az Orders.txt fájlt kézzel " + 
                    "kell visszaállítani az Orders backup.txt fájlból." + 
                    "A hiba részletes leírása: " + exc.Message);
                return;
            }

            try
            {
                File.Delete(@"orders\" + this.orderList.SelectedItem.ToString() + ".txt");
            }
            catch (Exception exc)
            {
                MessageBox.Show("Hiba történt a következő hibaüzenettel:\n\n" + exc.Message);
            }


            this.Close();
        }

        private void Cancel(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
